11 תשובות
לא.
PHP לא יודעת על שום CSS ובכלל שום דבר על מה שקורה אחרי שהקוד מסתיים לפעול, בגלל לקוח-שרת-לקוח.
את זה הבנתי,
אבל אפשר לעשות שאחרי לחיצה על כפתור(בPHP) שהCSS ישתנה ?
לדוגמא:
טופס שאם לוחצים submit ויש שגיאה,אז שהרקע יהיה אדום(וזה כמובן לאחר שליחה נוספת לשרת)
PHP לא יודעת שום דבר על שום CSS ושום שדות.
היא רק נותנת פלט מסוים לדפדפן (שמבחינת PHP אין לו שום משמעוט לוגית כלשהי)
ומה הדפדפן עושה עם זה הפלט הזה ומה מצויר אחרי זה על המסך היא לא יודעת.
מה שאתה יכול לעשות (ולא כדאי) זה לגרום ל PHP לייצר קלט כזה, שכשהדפדפן יפענח הפלט הזה, הוא יצבע באדום משהו. עושים את זה ככה:
{
?>
<style>
.whatever-field { background: red; }
</style>
<?php
}
אבל מה שיותר עדיף לעשות, זה בדיקות ב javascript ולצבוע שדות באדום עוד לפני שמשהו נשלח לשרת בכלל.
בJS כבר עשיתי.
עכשיו אני רוצה גם בPHP.
אז אתה לא ממילץ על זה? - אשמח לדעת למה?
ד"א גם בגיימיל במסך כניסה/התחברות יש את זה..
אני לא ממליץ על זה מהסיבה שצריכה להיות הפרדה בין הקליינט שבו קוראים כל הדברים הוויזואלים והעיצוביים לבין מה שקורה בשרת, שלא צריך לדעת על שום קליינט ועל מה שקורה בו, ובטח שלא להכיל קוד css, אחרת הקוד הופך ללא נוח לשינוי ותחזוקה.
בנוסף זה פלט מיותר ולא יפה. אם אתה רוצה בכל זאת שיהיה כזה דרך השרת, אתה יכול לשדות שהם לא תקינים להוסיף אטריביות נוסף של "לא תקין" ובאמצעות javascript לעבור אחרי זה על כל השדות ולסמן אותם באדום.
<?php if(!$valid) echo 'data-valid="false"' ?>
/>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script type='text/javascript'>
$(document).ready(function(){
$('input[data-valid=false]').css('background', 'red');
});
</script>
טוב זה כבר נראה מסובך..
עוד משהו קטן: עשיתי בPHP שידפיס לי תג P שכתוב בו שגיאה מסויימת,
לתג הזה נתתי ID ובCSS עיצבתי אותו,
זה בסדר או שגם זה מומלץ שלא?
זה בסדר גמור, כיוון שאיך לצייר את זה על המסך, באיזה צבעים ומה יהיה שם לא מחליט PHP.
גם כתוב בריבוע כחול 4 הודעות למעלה וגם עדיף שתשאל את זה בתור שאלה חדשה, נפרדת :)